package run;

import java.net.MalformedURLException;
import java.util.Random;

import javax.xml.stream.XMLStreamException;

import org.xml.sax.SAXException;

import sax.sax;
import woodstock.woodstock;
import xom.xom;
import dom.dom;
import dom4j.dom4j;
import jaxp.JaxpParser;

;

public class RunParsers {

	/**
	 * @param args
	 * @throws SAXException
	 * @throws MalformedURLException
	 * @throws XMLStreamException 
	 */
	public static void main(String[] args) throws MalformedURLException,
			SAXException, XMLStreamException {

		// String xml = "../CR01201203102.xml";
		// String xsd = "../CR01.xsd";

		String xml = args[0];
		String xsd = args[1];
		
		if (!xml.isEmpty() && !xsd.isEmpty()) {

			String cant = args[2];
			int cantidad;
			int randomInt;
			
			if (cant.isEmpty()){
			Random randomGenerator = new Random();
			cantidad = 5;
			randomInt = randomGenerator.nextInt(cantidad);
			}else{
				randomInt=Integer.parseInt(cant);				
			}
			
			String nombreValidador = "";
			long tiempo = 0;

			switch (randomInt) {
			case 0:
				nombreValidador = "DOM";
				dom dpe = new dom();
				tiempo = dpe.validateDOM(xml, xsd);
				break;
			case 1:
				nombreValidador = "SAX";
				sax validadorSAX = new sax();
				tiempo = validadorSAX.validateSAX(xml, xsd);
				break;
			case 2:
				nombreValidador = "DOM4J";
				dom4j validadorDOM4j = new dom4j();
				tiempo = validadorDOM4j.validateDOM4j(xml, xsd);
				break;
			case 3:
				nombreValidador = "XOM";
				xom validadorXOM = new xom();
				tiempo = validadorXOM.validateXOM(xml, xsd);
				break;
			case 4:
				nombreValidador = "Woodstock";
				woodstock validadorWoodstock = new woodstock();
				tiempo = validadorWoodstock.validateWoodstock(xml, xsd);
				break;
			case 5:
				nombreValidador = "JAXP";
				JaxpParser validadorJAXP = new JaxpParser();
				tiempo = validadorJAXP.validateJaxp(xml, xsd);
				break;

			default:
				break;

			}

			libs.Librerias.escribirReporte(nombreValidador,
					Long.toString(tiempo));

		} else {
			System.out.println("Parametros incorrectos");
		}
	}
}
